package com.leetcode.LeetCode精选TOP面试题;

import java.util.HashMap;
import java.util.Map;

/**
 * @author 覃国强
 * @date 2022-05-18 17:03
 */
public class 题库_0013_罗马数字转整数 {

  static
  class Solution {
    private static final Map<Character, Integer> symbolValues = new HashMap<>();
    static {
      symbolValues.put('I', 1);
      symbolValues.put('V', 5);
      symbolValues.put('X', 10);
      symbolValues.put('L', 50);
      symbolValues.put('C', 100);
      symbolValues.put('D', 500);
      symbolValues.put('M', 1000);
    }

    public int romanToInt(String s) {
      if (s == null || s.length() == 0) {
        return 0;
      }
      int answer = 0;
      for (int i = 0; i < s.length(); ++i) {
        Integer value = symbolValues.get(s.charAt(i));
        if (i < s.length() - 1 && symbolValues.get(s.charAt(i + 1)) > value) {
          answer -= value;
        } else {
          answer += value;
        }
      }
      return answer;
    }
  }

}
